/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import JPAControllers.*;
import JPAControllers.exceptions.PreexistingEntityException;
import Persistencia.*;
import dominio.TratamientoDomain;
import java.util.ArrayList;
import java.util.List;

public class ControladorTratamiento {
    TratamientoDomain TratamientoD;
    Sesion sesion;
    Tratamiento Tratamiento;
    TratamientoJpaController controlador;
    ControladorSesion controladorSes;

    public String guardarTratamiento(){
        String res="";
        try {
            controlador = new TratamientoJpaController();
            setTratamiento();
            controlador.create(Tratamiento);
            res="Se agrego exitosamente el tratamiento del paciente: "+
                    ((Paciente)sesion.getPaciente()).getNombre()+" "+((Paciente)sesion.getPaciente()).getApellido()+
                    " en la fecha: "+sesion.getFecha();
            return res;
        }catch(Exception ex){
            res="No se pudo agregar el tratamiento para el paciente: "+((Paciente)sesion.getPaciente()).getNombre()+" "+((Paciente)sesion.getPaciente()).getApellido();
            return res;
        }
    }

    public List<Tratamiento> encontrarTratamientos(){
        controlador = new TratamientoJpaController();
        return controlador.findTratamientoEntities();
    }

    public Tratamiento setTratamiento(){
        Tratamiento=new Tratamiento();        
        controladorSes= new ControladorSesion();
        sesion=controladorSes.encontrarSesion(TratamientoD.getIdSesion());
        Tratamiento.setObjetivo(TratamientoD.getObjetivo());
        Tratamiento.setSesion(sesion);        
        Tratamiento.setIntensidadSemanal(TratamientoD.getIntensidadSemanal());
        Tratamiento.setDuracion(TratamientoD.getDuracion());
        Tratamiento.setDiagnosticoFisio(TratamientoD.getDiagnosticoFisio());
        return Tratamiento;
    }

    public void setTratamientoD(TratamientoDomain in){
        TratamientoD=in;
    }

    public void modificarTratamiento(){
        try {
            controlador = new TratamientoJpaController();           
            controlador.edit(Tratamiento);
        }catch (Exception ex) {
            ex.printStackTrace();
        }
    }

    public Tratamiento encontrarTratamiento(String idSesion) {
        Tratamiento trata=null;
        List<Tratamiento> listaTodosTratamiento=encontrarTratamientos();
        for(int i=0;i<listaTodosTratamiento.size();i++){
            if(listaTodosTratamiento.get(i).getSesion().getIdSesion().intValue()==Integer.parseInt(idSesion)){
                trata=(listaTodosTratamiento.get(i));
                break;
            }
        }
    return trata;
    }

    public List<Tratamiento> encontrarMisTratamientos(String idFisio) {
        controladorSes= new ControladorSesion();
        List<Tratamiento> list=encontrarTratamientos();
        List<Tratamiento> list2 = new ArrayList<Tratamiento>();
        List<Sesion> listSesion;
        listSesion=controladorSes.encontrarMisSesiones(idFisio);
        for(int i=0;i<list.size();i++){
            for(int j=0;j<listSesion.size();j++){
                if(list.get(i).getSesion().getIdSesion()==listSesion.get(j).getIdSesion()){
                    list2.add(list.get(i));
                }
            }
        }
        return list2;
    }

    public void setTratamientoMod(){
        Tratamiento.setIdTratamiento(Integer.parseInt(TratamientoD.getIdTratamiento()));
    }

    public List<Tratamiento> encontrarMisTratamientosPac(String idPaciente){
        controlador= new TratamientoJpaController();
        List<Tratamiento> ses=controlador.findTratamientoEntities();
        for(int i=0;i<ses.size();i++){
            if(ses.get(i).getSesion().getPaciente().getIdPaciente()!=Integer.parseInt(idPaciente)&&ses.get(i).getSesion().getPaciente().getEstado().equals("1")){
                ses.remove(i);
            }
        }
        return ses;
    }
    public void eliminarTratamiento(Tratamiento ob) {
         try {
            Tratamiento=ob;
            controlador.destroy(Tratamiento.getIdTratamiento());
        }catch(Exception ex){}
    }

    public TratamientoDomain convertirDomain(Tratamiento log) {//VER PROBLEMAAAA
        TratamientoDomain res=new TratamientoDomain();
        res.setIdTratamiento(""+log.getIdTratamiento());
        res.setIdSesion(""+log.getSesion().getIdSesion());
        res.setObjetivo(log.getObjetivo());
        res.setIntensidadSemanal(log.getIntensidadSemanal());
        res.setDuracion(log.getDuracion());
        res.setDiagnosticoFisio(log.getDiagnosticoFisio());
        return res;
    }
}
